"""
11-递归
在满足条件的情况下，函数自己调用自己的一种特殊编程技巧

递归需要注意什么？
- 注意退出的条件，否则容易变成无限递归
- 注意返回值的传递，确保从最内层，层层传递到最外层


os模块的3个方法
os.listdir，列出指定目录下的内容
os.path.isdir，判断给定路径是否是文件夹，是返回True，否返回False
os.path.exists，判断给定路径是否存在，存在返回True，否则返回False


使用场景：
- 目录文件遍历

"""
import os.path


def check(path):
    file_list = []
    if os.path.exists(path):
        for f in os.listdir(path):
            new_path = path + '/' + f
            if os.path.isdir(new_path):
                file_list += check(new_path)  # 递归调用
            else:
                if not f.endswith(".DS_Store"):
                    file_list.append(new_path)
    else:
        print('路径不存在')

    return file_list


if "__main__" == __name__:
    path = '/Users/huwanxin/MyWork/workspace/gitee-project/python-study/第3阶段/第二章-高阶技巧/digui'

    ret_list = check(path)
    for f in ret_list:
        print(f)
